#define _CRT_SECURE_NO_WARNINGS
// ↑ 将本行在代码放在第一行可以避免 scanf的报错问题（仅在VS编译器里）
//【初阶篇】31.分支和循环语句作业练习
//【初阶篇】32.休息

#include<stdio.h>

int main()
{
	//练习1.转换以下ASCII码为对应字符并输出他们：73,32,99,97,110,32,100,111,32,105,116,33
	int arr[] = { 73,32,99,97,110,32,100,111,32,105,116,33 };
	int i = 0;
	int sz = sizeof(arr) / sizeof(arr[0]);//这一步 sizeof是通过获取arr数组的总大小，比上获取数组元素的大小，得到了数组元素的个数
	printf("sz=%d\n", sz);
	while (i < sz)
	{
		printf("%c", arr[i]);
		i++;
	}
	printf("\n");

	//-------------------------------------

	//练习2.输入一个人的出生日期（包括年月日），将该生日中的年、月、日分别输出
	//数据范围：年份满足1990<=y<=2015,月份满足1<=m<=12,日满足1<=d<=30
	int year = 0;
	int month = 0;
	int date = 0;
	scanf("%4d%2d%2d" , &year, &month, &date);//scanf %m可控制指定输入域宽

	printf("year=%d\n", year);//printf %m可以控制输出的宽度，%0可以指定左面不使用的空位置自动填0
	printf("month=%02d\n", month);
	printf("date=%02d\n", date);
	//-------------------------------------

	//练习3.依次输入一个学生的学号，以及3科（C语言，数学，英语）成绩，在屏幕上输出该学生的学号，3科成绩
	// （注：输出成绩时需进行四舍五入且保留两位小数），学号满足1<=n<=20000000，各科成绩百分之无负数
	//输入规范：学号及三科成绩，学号和成绩间用英文分号隔开，成绩间用英文逗号隔开
	//输入示例：17140216；80.845,90.55,100.00
	//输出示例：The each subject score of No. 17140216 is 80.85,90.55,100.00.
	int no = 0;
	float sc1 = 0.0f;
	float sc2 = 0.0f;
	float sc3 = 0.0f;
	scanf("%d;%f,%f,%f", &no, &sc1, &sc2, &sc3);

	printf("The each subject score of No. %d is %.2f,%.2f,%.2f.", no, sc1, sc2, sc3);//%.m 在printf输出浮点型数值时会保留m位小数
	//-------------------------------------

	// 练习4. KIKI写了一个输出“Hello world!”的程序，BOBO老师告诉他printf函数有返回值，你能帮他写个程序输出printf（"Hello world!"）的返回值

	int n = printf("Hello world!");
	printf("\n%d\n", n);
	//-------------------------------------

	//练习5.输出c和c++输出Hello world的代码（考转义字符)

	printf("printf(\"Hello world!\\n\");");
	printf("count << \"Hello world!\" << endl;");
	//-------------------------------------


	//练习6.4个数的最大数，输入四个整数空格隔开 输出最大数
		//我的解法
		int a = 0;
		int b = 0;
		int c = 0;
		int d = 0;
		scanf("%d %d %d %d", &a, &b, &c, &d);
		if (a >= b && a >= c && a >= d)
			printf("%d\n", a);
		else if (b >= a && b >= c && b >= d)
			printf("%d\n", b);
		else if (c >= a && c >= b && c >= d)
			printf("%d\n", c);
		else //if (d >= a && d >= b && d >= c)
			printf("%d\n", d);
		//------
		//老师解法
		int arr[4] = { 0 };
		int i = 0;
		while (i < 4)
		{
			scanf("%d", &arr[i]);
			i++;
		}
		int max = arr[0];
		i = 1;
			while (i < 4)
			{
				if (arr[i] > max)
				{
					max = arr[i];
				}
				i++;
			}
			printf("%d\n", max);
		//------
	//-------------------------------------
	
	//练习6.给定球体半径，计算体积，V= 4/3*πr^3，其中π= 3.1415926
			double r = 0.0;
			double pi = 3.1415926;//double精度更高，但在输出和输入时要使用%lf，且初始化时0.0即可不用0.0f，0.0默认是double类型的
			scanf("%lf", &r);
			double v = 4/3.0*pi*r*r*r;
			printf("%.3lf", v);
	//-------------------------------------

	//练习7.计算BMI指数 输入两个整数，分别表示公斤已通过身高厘米，中间空格隔开，输出BIM指数保留两位小数，公式 体重/身高（米数）平方得出的数字
			int m = 0;
			int h = 0;
			float bim = 0.0f;
			scanf("%d %d", &m, &h);
			bim = m / (((float)h / 100) * ((float)h / 100));
			printf("%.2f", bim);
	//-------------------------------------




	return 0;
}